<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="shortcut icon" href="../common/favicon.ico" type="image/x-icon">
    <title>靓的仔的Java博客</title>
    <link rel="stylesheet" href="../common/css/index.css">
</head>


<body>
    <header class="header">
        <div class="photo">
            <a href="/MyBlog/index.html">
                <img src="../common/images/photo.jpg">
                <span>靓</span><span>的</span><span>仔</span>
            </a>
        </div>
        <div class="count">正在浏览Java博客</div>
    </header>
    <section class="section">
        <h1 class="urge">希望你并不是为了努力而努力</h1>
        <div class="photo_info">
            <img src="../common/images/photo.jpg">
            <p>靓的仔</p>
            <span>"我不会是<br>最勇的吧"</span>
        </div>
    </section>
    <div class="boke">
        <div class="blog">
            <!--blog4-->
            <h1 class="title">Java的运算符</h1>
            <p>一、算术运算符</p>
            <p class="indent2em">+：加法运算符</p>
            <p class="indent2em">-：减法运算符</p>
            <p class="indent2em">*：乘法运算符</p>
            <p class="indent2em">/：商数运算符</p>
            <p class="indent2em">%：余数运算符</p>
            <p class="indent2em">++：自加运算符</p>
            <p class="indent2em">--：自减运算符</p>
            <p class="indent2em">1.加法运算符如果左右两边两个算子都是数字，"+"会求和，但是只要有其中一个算子为字符串，"+"就会把两个算子当作字符串拼接在一起</p>
            <p class="indent2em">2."/"计算的是两个算子的商数，如果是两个整数型做"/"，那么只会得出整除的商数，如果至少有一侧算子为浮点数，那么会计算较为准确的商</p>
            <p class="indent2em">3."%"计算的是两个算子的余数，如果是两个整数型做"%"，那么只会得出整除之后的余数</p>
            <p class="indent2em">4."++"是单目运算符，如果操作数在前，会先计算再带入值，如果操作数在后，会先带入值，但是无论如何被操作数都会自加一，"--"同理</p>
            <p class="indent2em">5.当一个表达式中有多个运算符时，编译器会按照运算符的优先级计算，不确定优先级时就加一队括号表示优先计算"()"</p>
            <p>二、关系运算符</p>
            <p class="indent2em">&gt;：大于</p>
            <p class="indent2em">&gt;=：大于等于</p>
            <p class="indent2em">&lt;：小于</p>
            <p class="indent2em">&lt;=：小于等于</p>
            <p class="indent2em">==：等于</p>
            <p class="indent2em">!=：不等于</p>
            <p class="indent2em">1.关系运算符一定有两个算子，并且输出的值一定是布尔型的true/false</p>
            <p class="indent2em">2.特别注意"="是赋值运算符，"=="才是判断是否相等</p>
            <p>三、逻辑运算符</p>
            <p class="indent2em">&：逻辑与运算符</p>
            <p class="indent2em">|：逻辑或运算符</p>
            <p class="indent2em">!：逻辑非运算符</p>
            <p class="indent2em">^：逻辑异或运算符</p>
            <p class="indent2em">&&：短路与运算符</p>
            <p class="indent2em">||：短路或运算符</p>
            <p class="indent2em">1.逻辑与和短路与：两边算子都为true时，表达式结果为true（并且），只要其中有一个算子为false，表达式结果为false</p>
            <p class="indent2em">2.逻辑或和短路或：两边算子只要有一个为true，结果就为true（或者），两个算子都为false，表达式结果为false</p>
            <p class="indent2em">3."!"时一个单目运算符，当算子为true时表达式结果为false，当算子为false时表达式结果为true（取反）</p>
            <p class="indent2em">4."^"表示两端算子不一致时，表达式为true，两端算子都为true或者false，表达式结果为false</p>
            <p class="indent2em">5.逻辑和短路的区别：当使用逻辑表达式时，如果第一个算子已经可以得到表达式结果时，第二个算子仍然会计算；
                当使用段落表达式时，如果第一个算子已经可以得到整个表达式的结果时，第二个算子就不会执行；比如：int i = 0;(i != 0) & ((i++) == 1);执行之后i的结果为1，
                而int i = 0;(i != 0) && ((i++) == 1);执行之后i的结果为0，因为在此例中使用逻辑与时，第一个算子以进可以判断结果为false，第二个算子没有再计算</p>
            <p>四、位运算符</p>
            <p class="indent2em">&：按位与（AND）</p>
            <p class="indent2em">|：按位或（OR）</p>
            <p class="indent2em">^：按位异或</p>
            <p class="indent2em">~：按位非（NOT）</p>
            <p class="indent2em">&gt;&gt;：右移</p>
            <p class="indent2em">&lt;&lt;：左移</p>
            <p class="indent2em">&gt;&gt;&gt;：右移</p>
            <p class="indent2em">1.按位与、逻辑与和按位或、逻辑或两队符号分别都是一样的，这是因为false和true的本质是在内存中存储的位分别为0和1</p>
            <p class="indent2em">2.位运算符操作符操作的是二进制位即比特位，只有两个算子都是数字时才是位运算符操作，如果是布尔类型就会变成逻辑运算符操作，在Java中数字不能和布尔类型操作</p>
            <p class="indent2em">3."~"也是单目运算符，会将算子的所有二进制位取反</p>
            <p class="indent2em">4."&gt;&gt;"，"&lt;&lt;"，"&gt;&gt;&gt;"都是移位操作符(var &gt;&gt; bit)，"10
                &gt;&gt;3"表示把10的二进制位向右移动3个比特位，"&lt;"同理。
                "&gt;&gt;"，"&gt;&gt;&gt;"的区别是："&gt;&gt;"移位时左边空出来的位按照最高位的符号位补，正数补0负数补1，而"&gt;&gt;&gt;"只会补0</p>
            <p>五、赋值类运算符</p>
            <p class="indent2em">=：普通赋值运算符</p>
            <p class="indent2em">+=：加等运算符</p>
            <p class="indent2em">-=：减等运算符</p>
            <p class="indent2em">*=：乘等运算符</p>
            <p class="indent2em">/=：商等运算符</p>
            <p class="indent2em">%=：模等运算符</p>
            <p class="indent2em">1.赋值类运算符会先计算运算符右边的值再赋给左边</p>
            <p class="indent2em">2.各种等的赋值运算符和普通赋值运算符的区别为：前者不会改变数据类型，但是会损失精度</p>
            <p>六、字符串连接运算符</p>
            <p class="indent2em">1."+"两个算子都是数字的话就并不是进行的字符串连接运算，要至少有一个算子是字符串才是做字符串连接运算</p>
            <p class="indent2em">2.运算之后的结果永远是字符串类型(String)</p>
            <p class="indent2em">3.当一个表达式出现多个"+"，如果有括号就先计算括号，然后从左往右依次计算</p>
            <p>七、三元运算符</p>
            <p class="indent2em">1.语法规则：布尔表达式?表达式1?表达式2;</p>
            <p class="indent2em">2.当布尔表达式为true时，整个运算符的结果为表达式1；当布尔表达式为false时，整个运算符的结果为表达式2；</p>
            <div class="date">发布于2021年09‎月‎12‎日 ‏‎16:03:45</div>
        </div>
    </div>
</body>

</html>